# -*- coding: utf-8 -*-
'''
2022.6.7
思路：先输入一个句子，利用正则判断，句子中是否含有触发词（把、被），如果未含有，则返回空，如果含有，则利用LAC分词、词性标注，DDParser做依存句法
判断条件，原句中是否含有触发词、触发词的词性为介词、句法结构为POB，三者同时满足，可以大致判断为把字句、被字句

特殊情况：例如，把墙角站着，此处把->紧靠，应理解为动词，而在LAC只能判别为P，且在DDParser中，依存句法判别为POB（介宾关系）
正常应该是V和VOB的判别
'''

import re
from LAC import LAC
from ddparser import DDParser

lac = LAC()
ddp = DDParser()

def find_key(sentence):
    pattern_1 = re.compile(r'[\u628a]')         # 把
    pattern_2 = re.compile(r'[\u88ab]')         # 被
    if  re.findall(pattern_1, sentence) or re.findall(pattern_2, sentence):
        return sentence
    return ""

def judge_ba_bei(text):
    sentences = re.split(r"[。；：，]", text)

    for sentence in sentences:
        print(sentence)
        sentence = find_key(sentence)
        if sentence == "":
            continue

        lacres = lac.run('成都是在平原的底部')
        ddpres = ddp.parse_seg([lacres[0]])
        print(lacres)
        print(ddpres)

        for i in range(len(lacres[0])):
            if lacres[0][i] == '把' and lacres[1][i] == 'p' and ddpres[0]['deprel'][i] == 'POB':
                print("此句是把字句！")
                print("*"*30)
            if lacres[0][i] == '被' and lacres[1][i] == 'p' and ddpres[0]['deprel'][i] == 'POB':
                print("此句是被字句！")
                print("*"*30)

if __name__ == '__main__':
    text = "高源把教研室大门的门把手偷走了，他被保卫处带走了，他把办公室墙根儿站着。他可真是个大傻子。"
    ajxw_res = judge_ba_bei(text)

